package cn.disicn.controller;

import java.io.File;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.jfinal.ext.interceptor.POST;
import com.jfinal.kit.PropKit;
import com.jfinal.upload.UploadFile;

import cn.disicn.common.BizJobsSearch;
import cn.disicn.common.Const;
import cn.disicn.common.ServerResponse;
import cn.disicn.model.BizJobs;
import cn.disicn.model.SecPublishUser;
import cn.disicn.service.BizJobsService;
import cn.disicn.util.FileUploadUtil;

/**
 * @author Luyao
 * @date 2017年11月27日 上午9:31:31
 * @desc: 任务模块
 */
public class BizJobsController extends Controller {

	private static final Logger LOGGER = LoggerFactory.getLogger(BizJobsController.class);

	private static final BizJobsService BIZ_JOBS_SERVICE = new BizJobsService();

	/**
	 * 
	 * @desc:有条件分页查询所有任务
	 * @date 2017年11月27日 上午9:32:46
	 */
	public void index() {
		// 获取搜索的参数
		BizJobsSearch bizJobsSearch = getBean(BizJobsSearch.class, "");
		LOGGER.info("搜索关键词：" + bizJobsSearch.getSearchKeyword());
		// LOGGER.info("审核状态：" + bizJobsSearch.getAuditStatus().toString());
		LOGGER.info("任务状态：" + bizJobsSearch.getTaskState().toString());
		Integer pageNum = getParaToInt("pageNum");
		LOGGER.info("pageNum:" + pageNum);
		Integer pageSize = getParaToInt("pageSize");
		LOGGER.info("pageSize:" + pageSize);
		// 获取用户id
		String publishUserId = ((SecPublishUser) getSessionAttr(Const.userType.CURRENT_USER)).getId();
		// 查询数据
		renderJson(BIZ_JOBS_SERVICE.getBizJobsList(bizJobsSearch, pageNum, pageSize, publishUserId));
	}

	/**
	 * 
	 * @desc:附件上传
	 * @date 2017年11月28日 上午11:33:18
	 */
	public void annexUpload() {
		// 获取文件
		UploadFile file = getFile();
		if (file != null) {
			// 创建文件对象
			File f = file.getFile();
			// 上传到oss中
			String url = FileUploadUtil.fileUpload(f, PropKit.use("ossgon.properties").get("jobAnnex")).getData();
			// 删除本地文件
			f.delete();
			renderJson(ServerResponse.createBySuccessMsg("附件上传成功", url));
		} else {
			renderJson(ServerResponse.createByErrorMsg("文件获取失败"));
		}
	}

	/**
	 * 
	 * @desc:发布任务
	 * @date 2017年11月28日 下午6:28:33
	 */
	@Before(POST.class)
	public void releaseBizJobs() {
		BizJobs bizJobs = getBean(BizJobs.class, "");
		String attachmentUrls = getPara("attachmentUrls");
		String userId = ((SecPublishUser) getSessionAttr(Const.userType.CURRENT_USER)).getId();
		renderJson(BIZ_JOBS_SERVICE.releaseBizJobs(bizJobs, attachmentUrls, userId));
	}

}
